ARTICLES > SQL

SQL แบ่งหน้าฐานข้อมูล Oracle Turn Back

2016-01-04 14:58:09

 

SQL query paging in Oracle

Select * from (

Select a.*,b.*, row_number() over (order by a.ID desc) as row_no from DB.TABLE1 a

LEFT JOIN DB.TABLE2 b on b.ID=a.bID order by a.ID desc

)

where row_no between 1 and 100 order by row_no

ใช้สำหรับการทำ paging จากฐานข้อมูล oracle โดยที่ 1 and 100 คือ คำสั่งแสดงข้อมูลตั้งแต่ row ที่ 1 ถึง 100 

ซึ่งหากจะดูหน้าต่อไป ก็เปลี่ยนเป็น 101 and 200

ดังนั้น ก่อนทำการ query ข้อมูลเพื่อแบ่งหน้า ให้หา Total record ทั้งหมดก่อน
แล้วนำจำนวน Total  มาหารด้วยจำนวน list/page ที่ต้องการให้แสดง
แล้วนำผลลัพธ์มาตัดเศษทิ้ง บวกด้วย +1 ก็จะได้จำนวนหน้าทั้งหมด สำหรับทำลิงคื ให้กดเปลี่ยนหน้า

ตัวอย่าง

มีข้อมูลอยู่ 950 record  ต้องการแบ่งแสดงหน้าละ 100 record

950 / 100 = 9.5 ไม่เอาเศษ เหลือ 9 แล้ว +1 

จะได้ทั้งหมด 10 page

oracle pagination

Download CSS: pagination

 

Turn Back